<?php


class News implements Iterator,ArrayAccess,JsonSerializable
{
    public $data = [];
    public $position = 0;
    public $indexNum = 0;
    public function __construct()
    {
        //从数据库中取出数据
        $this->data = [
            [
                'id' => 101,
                'title' => 'Android最佳的开源库集锦',
                'content' => '工欲善其事，必先利其器。一个好的开发库可以快速提高开发者的工作效率，甚至让开发工作变得简单。本文收集了大量的Android开发库，快来切磋一下，到底哪一个更适合你？',
                'pubtime' => '2020-01-23',
            ],
            [
                'id' => 102,
                'title' => 'Javascript里常见的时间位置属性',
                'content' => 'pageX指鼠标在页面上的位置，以页面左侧为参考点clientX指可视区域内离左侧的距离，以滚动条滚动到位置的参考点。各浏览器相同。',
                'pubtime' => '2020-02-23',
            ],
            [
                'id' => 103,
                'title' => '松果出行：市场更下沉，股价越下沉？',
                'content' => ' 共享经济曾立于风口之上，被资本和创业者追捧，诞生出了共享单车、共享充电宝、共享汽车等一大批产物。共享经济曾随着共享单车的火热而推向高潮，也随着共享单车赛道双巨头 ofo 的倒下及摩拜的卖身而落入低谷。',
                'pubtime' => '2020-03-23',
            ],
            [
                'id' => 104,
                'title' => '宁德时代诉中航锂电的底层逻辑',
                'content' => '对于任何一个技术密集型主导性产业来说，规模性专利侵权诉讼从来都是不可避免的，它是这个产业走向成熟——从成本竞争到核心技术竞争——的标志。 过去 30 年间，从汽车、家电、化妆品、ICT 通信、半导体、智能手机，再到本周曝出的新能源动力电池领域宁德时',
                'pubtime' => '2020-04-23',
            ],
            [
                'id' => 105,
                'title' => '前有雅迪，后有九号，小牛电动的“智能”故事能动听多久？',
                'content' => '永远不会堵车的，不只有摩托车，还有两轮电动车。 相比“脚踏”自行车，两轮电动车显然更省时省力，电动自行车成为了取代它们的新宠。下班之后，骑上辆共享小电驴一路飙回家，也是许多社畜为了避免挤公交地铁的新选择。',
                'pubtime' => '2020-07-23',
            ],
        ];
    }

    public function current()
    {
        $result =(object) $this->data[$this->position];
        $result->indexNum = $this->position + 1;
        return $result;
    }

    public function next()
    {
        $this->position++;
    }

    public function key()
    {
        return $this->current()->id;
    }

    public function valid()
    {
        return isset($this->data[$this->position]);
    }

    public function rewind()
    {
        $this->position = 0;
    }

    public function offsetExists($offset)
    {
        return isset($this->data[$offset]);
    }

    public function offsetGet($offset)
    {
        return $this->data[$offset];
    }

    public function offsetSet($offset, $value)
    {
        $this->data[$offset] = $value;
    }

    public function offsetUnset($offset)
    {
        unset($this->data[$offset]);
    }

    public function jsonSerialize()
    {
        return $this->data;
    }
    public function __invoke($command){
        if ((string)$command == 'update'){
            echo "数据更新";
        }
        if (is_int($command)){
            return (object) $this->data[$command];
        }
    }
}